package com.fundstrategy.fund.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fundstrategy.common.annotation.Excel;
import com.fundstrategy.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;


/**
 * 基金基本信息对象 fund_basic
 * 
 * @author 邓先生
 * @date 2025-09-02
 */
public class FundBasic extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 基金代码 */
    @Excel(name = "基金代码")
    private String fundCode;

    /** 基金名称 */
    @Excel(name = "基金名称")
    private String fundName;

    /** 基金类型 */
    @Excel(name = "基金类型")
    private String fundType;

    /** 基金公司 */
    @Excel(name = "基金公司")
    private String fundCompany;

    /** 基金经理 */
    @Excel(name = "基金经理")
    private String fundManager;

    /** 成立日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成立日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date establishDate;

    /** 发行日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发行日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issueDate;

    /** 规模(亿元) */
    @Excel(name = "规模(亿元)")
    private BigDecimal scale;

    /** 管理费率 */
    @Excel(name = "管理费率")
    private BigDecimal managementFee;

    /** 托管费率 */
    @Excel(name = "托管费率")
    private BigDecimal custodyFee;

    /** 基金状态 */
    @Excel(name = "基金状态")
    private String status;

    /** 业绩比较基准 */
    @Excel(name = "业绩比较基准")
    private String benchmark;

    /** 投资目标 */
    @Excel(name = "投资目标")
    private String investmentObjective;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setFundCode(String fundCode) 
    {
        this.fundCode = fundCode;
    }

    public String getFundCode() 
    {
        return fundCode;
    }

    public void setFundName(String fundName) 
    {
        this.fundName = fundName;
    }

    public String getFundName() 
    {
        return fundName;
    }

    public void setFundType(String fundType) 
    {
        this.fundType = fundType;
    }

    public String getFundType() 
    {
        return fundType;
    }

    public void setFundCompany(String fundCompany) 
    {
        this.fundCompany = fundCompany;
    }

    public String getFundCompany() 
    {
        return fundCompany;
    }

    public void setFundManager(String fundManager) 
    {
        this.fundManager = fundManager;
    }

    public String getFundManager() 
    {
        return fundManager;
    }

    public void setEstablishDate(Date establishDate) 
    {
        this.establishDate = establishDate;
    }

    public Date getEstablishDate() 
    {
        return establishDate;
    }

    public void setIssueDate(Date issueDate) 
    {
        this.issueDate = issueDate;
    }

    public Date getIssueDate() 
    {
        return issueDate;
    }

    public void setScale(BigDecimal scale) 
    {
        this.scale = scale;
    }

    public BigDecimal getScale() 
    {
        return scale;
    }

    public void setManagementFee(BigDecimal managementFee) 
    {
        this.managementFee = managementFee;
    }

    public BigDecimal getManagementFee() 
    {
        return managementFee;
    }

    public void setCustodyFee(BigDecimal custodyFee) 
    {
        this.custodyFee = custodyFee;
    }

    public BigDecimal getCustodyFee() 
    {
        return custodyFee;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setBenchmark(String benchmark) 
    {
        this.benchmark = benchmark;
    }

    public String getBenchmark() 
    {
        return benchmark;
    }

    public void setInvestmentObjective(String investmentObjective) 
    {
        this.investmentObjective = investmentObjective;
    }

    public String getInvestmentObjective() 
    {
        return investmentObjective;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("fundCode", getFundCode())
            .append("fundName", getFundName())
            .append("fundType", getFundType())
            .append("fundCompany", getFundCompany())
            .append("fundManager", getFundManager())
            .append("establishDate", getEstablishDate())
            .append("issueDate", getIssueDate())
            .append("scale", getScale())
            .append("managementFee", getManagementFee())
            .append("custodyFee", getCustodyFee())
            .append("status", getStatus())
            .append("benchmark", getBenchmark())
            .append("investmentObjective", getInvestmentObjective())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
